package CronModel

import (
	"arabApi/app/api/models"
	"arabApi/app/api/requests/CronRequest"
	"arabApi/pkg/database"
	"arabApi/pkg/helpers"
)

// CronJob  z定时任务管理表
type CronJob struct {
	models.BaseModel
	Name  string `gorm:"column:name" json:"name"`     //  标签
	Spec  string `gorm:"column:spec" json:"spec"`     //  规则
	Desc  string `gorm:"column:desc" json:"desc"`     //  描述
	JobId int64  `gorm:"column:job_id" json:"job_id"` //  任务id
	State int64  `gorm:"column:state" json:"state"`   //  1 开启 2 禁用
	models.CommonTimestampsField
}

func (t CronJob) TableName() string {
	return "tp_cron_job"
}

func List() []CronJob {
	var cronjob []CronJob
	database.DB.Model(&CronJob{}).Find(&cronjob)
	return cronjob
}

func FindOne(id int64) CronJob {
	var cronjob CronJob
	database.DB.Model(&CronJob{}).Where("id = ?", id).Find(&cronjob)
	return cronjob
}

func Edit(cronReq CronRequest.CronJob) (int64, error) {
	cronjob := &CronJob{}

	if err := helpers.Copy(cronReq, cronjob); err != nil {
		return 0, err
	}

	if err := database.DB.Model(&CronJob{}).Where("id = ?", cronReq.ID).Save(cronjob); err != nil {
		return 0, err.Error
	}
	return cronjob.JobId, nil
}

func Del() {
	//var cronjob CronJob
	//database.DB.Model(&CronJob{}).Where("id = ?",id).Find(&cronjob)

}

func Add(cronReq CronRequest.CronJob) (int64, error) {
	cronjob := &CronJob{}
	if err := helpers.Copy(cronReq, cronjob); err != nil {
		return 0, err
	}

	if err := database.DB.Model(&CronJob{}).Create(cronjob); err != nil {
		return 0, err.Error
	}

	return cronjob.JobId, nil
}
